package Juegos;

import Componentes.*;
import Graficos.*;
import Logica.*;

/**
 * ProyectoX TDP 2011
 * @author  Ma Gimena Ramos- LU:82716
 * @autor Brenda Dilschneider- LU: 92774
 *
 */


	public class Partida {
		private int vidas;
		 private int puntaje;
		 private Personaje personaje;
		 private ManejoLogico manejo;
		 private Posicion actual;
		 
		 /**
		  * constructor
		  * @param nivel
		  * @param personaje
		  */
		 public Partida(int nivel,Personaje person){
			 vidas=1;
			 puntaje=0;
			 personaje=person;
			 manejo= new ManejoLogico(nivel);
			 actual=new Posicion(2,13);


		 }
		 
		 /**
		  * aumenta el puntaje 
		  * @param punt  valor a aumentar
		  */
		 public void aumentarPuntaje(int punt){
			 puntaje=puntaje+punt;
		 }
		 
		 
		 /**
		  * disminuye el puntaje 
		  * @param punt  valor a aumentar
		  */
		 public void disminuirPuntaje(int punt){
			 puntaje=puntaje-punt;
		 }
		 
		/**
		 * aumenta la cantidad de vidas en 1
		 */
		 public void aumentarVida(){
			 if (vidas!=3)
			vidas++;
		 }
		 
		 /**
		  * disminuye la cantidad de vidas en 1
		  */
		 public void disminuirVidas(){
			 if (vidas>0)
			 vidas--;
			 
		 }
		 
		 /**
		  * devuelve la cantidad de vidas
		  * @return cantidad de vidas
		  */
		 public int getVidas(){
			 return vidas;
		 }
		 
		 /**
		  * devuelve el puntaje
		  * @return puntaje
		  */
		 public int getPuntaje(){
			 return puntaje;
		 }
		 
		 /**
		  * devuelve el personaje
		  * @return personaje
		  */
		 public Personaje getPersonaje(){
			 return personaje;
		 }
		 
		 /**
		  * devuelve el componente que se encuentra en la posicion pasada por parametro
		  * @param x posicion en el eje x
		  * @param y posicicon en el eje y
		  * @return componente que se encuentra en la posicion
		  */
		public Componente getComponente(int x, int y){

			Componente c=manejo.BuscarDiccionario(x,y);

			return c;
			
		}
		/**
		 * devuelve la posicion actual del personaje
		 * @return posicion del personaje
		 */
		public Posicion obtenerPosicionActual(){
			
			return actual;
		}

		
		/**
		 * aumenta la posicion del personaje segun los valores pasados por parametro
		 * @param x valor que se le agrega al valor actual del eje x
		 * @param y valor que se le agrega al valor actual del eje y
		 */
		public void aumentarPosicionActual(int x,int y){
			
			
			actual.setPosicion(actual.getX()+x,actual.getY()+y);
				
		}
		
		/**
		 * asigna la posicion del personaje segun los valores pasados por parametro
		 * @param x valor que se le asigna al valor del eje x
		 * @param y valor que se le asigna al valor del eje y
		 */
		public void setPosicionActual(int x,int y){
			
			actual.setPosicion(x,y);	
		}

		/**
 * inicia los hilos de los malos
 */
		public void iniciarPartida(){
			for (Componente c : manejo.obtenerComponentes()){
			
					if (c.obtenerPM()){
						if (!c.destruido())
						{c.setPersonaje(personaje);
					
						
					c.arrancarHilo();}
			
					
				}
			}}
		
		/**
		 * mueve el escenario una posicion
		 */
		public void moverEscenario(){
		 
			for (Componente c : manejo.obtenerComponentes()){
			c.setPosicion(c.obtenerPosicion().getX()-1, c.obtenerPosicion().getY());
				c.getGrafico().setLocation(c.getGrafico().getLocation().x-8, c.getGrafico().getLocation().y);
				c.getGrafico().setLocation(c.getGrafico().getLocation().x-8, c.getGrafico().getLocation().y);
			}
			}

		/**
		 * asigna un personaje a la partida
		 * @param mario personaje a agregar
		 */
		public void setPersonaje(Personaje mario){
			personaje=mario;
		}


	
	} 
